Network applications in computing systems can require significant host processor resources due to layered architectures such as the seven-layer ISO model or the layered model used by the Windows™ operating system. The functions that are performed on a data packet as it proceeds between layers can be software intensive and can demand a substantial amount of processor and memory resources. Furthermore, the capability, efficiency, and throughput of many computer hardware peripherals such as network interface cards (NICs) is also increasing. Such computer system peripherals are often equipped with a dedicated processor and memory and are typically capable of performing sophisticated and complex computing tasks that are otherwise performed by the computer system processor in software. For instance, many NICs are capable of independently performing tasks otherwise performed by the CPU in software at an appropriate network layer, such as checksum calculation/verification; data encryption/decryption; message digest calculation; TCP or UDP segmentation; receive side packet classification; packet filtering to guard against denial of service attacks; and others. As such, there is an advantage in offloading such CPU intensive tasks to a peripheral hardware device. This would reduce processor utilization and memory bandwidth usage in the host computer, and thereby increase the efficiency, speed and throughput of the overall system. Such offloading may be implemented using the techniques described in commonly assigned U.S. Pat. Nos. 7,254,637 and 7,437,547.
Remote computing systems can enable users to access resources hosted by the remote computing systems. Servers on the remote computing systems can execute programs and transmit signals indicative of a user interface to clients that can connect by sending signals over a network conforming to a communication protocol such as the TCP/IP protocol. Each connecting client may be provided a session, i.e., an execution environment that includes a set of resources. Each client can transmit signals indicative of user input to the server and the server can apply the user input to the appropriate session. The clients may use protocols such as the Remote Desktop Protocol (RDP) to connect to a server resource. Protocols such as RDP typically handle graphics, device traffic such as USB, printer keyboard and mouse and in addition, virtual channels for application between server and a client. The terminal server hosts client sessions which can be in hundreds in a typical server configuration.
Protocols such as RDP support various such remote client machine capabilities. Typically, graphics data from the server needs to be either encoded, encrypted in graphics primitive form or rendered on the server, and the resulting bitmap needs to be compressed/encrypted and transmitted over a network. Encoding, rendering and encryption operations are highly are computational in nature and require high CPU utilization. It would thus be advantageous to offload such CPU intensive tasks to a peripheral hardware device using the techniques described above.